package BD;
/*atual*/
import java.sql.*;
import java.util.ArrayList;
import javax.swing.JOptionPane;//

public class pizzas extends bd {
    private int id_pizzas    = 0 ;
    private int id_sabores   = 0 ;
    private float valor      = 0 ;
    private String tamanho   = "";

    private String desc_sabor = "";
    private utilsPim utlp = new utilsPim();
    public int getId_pizzas() {
        return id_pizzas;
    }

    public void setId_pizzas(int id_pizzas) {
        this.id_pizzas = id_pizzas;
    }

    public int getId_sabores() {
        return id_sabores;
    }

    public void setId_sabores(int id_sabores) {
        this.id_sabores = id_sabores;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    public String getTamanho() {
        return tamanho;
    }

    public void setTamanho(String tamanho) {
        this.tamanho = tamanho;
    }

    public String getDesc_sabor() {
        return desc_sabor;
    }

    public void setDesc_sabor(String desc_sabor) {
        this.desc_sabor = desc_sabor;
    }


    public boolean incluir() {            
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
//            id_pizzas, id_sabores, tamanho, valor)
            
            sql = "INSERT INTO pizzas VALUES ((select coalesce(max(id_pizzas)+1,1) from pizzas),"
                    +"'"+ Integer.toString(this.getId_sabores())+ "', "                    
                    +"'"+ this.getTamanho()+ "', "                    
                    +"'"+ utlp.formatavalorsemmask(this.getValor())+"');";            
            
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }

    public boolean alterar() {
        try {
            if (!estaConectado()) 
                conecta();          

            stmt = getConexao().createStatement();          
            sql = "UPDATE pizzas "+
                  "SET id_sabores='"+ Integer.toString(this.getId_sabores()) + "', "+                  
                  "    valor='"+ utlp.formatavalorsemmask(this.getValor()) + "', "+                  
                  "    tamanho='"+ this.getTamanho() + "' "+                  
                  " WHERE id_pizzas='"+ Integer.toString(this.getId_pizzas())+"';";
                   
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }

    }

    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = "SELECT pizzas.*,sabores.descricao FROM pizzas  "+
                  "inner join sabores on sabores.id_sabores=pizzas.id_sabores "+
                  " where 1=1 ";
            if(! this.getDesc_sabor().equals(""))
                sql = sql+ " AND sabores.descricao = '"+this.desc_sabor+"'";
            
            if (this.getId_pizzas() >0 ){
                sql = sql + " AND pizzas.id_pizzas ='"+Integer.toString(this.getId_pizzas())+"'";
                }

            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query Pizza \n" + objErro.getMessage());
            return null;
        }
        
    }
    public ArrayList<pizzas> getItens(){
        ArrayList itens = new ArrayList();
        rs = this.consultar();
        try{
            while(rs.next()){
                pizzas    obj = new pizzas();
                obj.setId_pizzas(rs.getInt("id_pizzas"));
                obj.setId_sabores(rs.getInt("id_sabores"));
                obj.setDesc_sabor(rs.getString("descricao"));
                obj.setValor(rs.getFloat("valor"));
                obj.setTamanho(rs.getString("tamanho"));
                itens.add(obj);               

            }
            stmt.close();
            disconecta();
        }
        catch(SQLException erro){
            msgErro = erro.getMessage();            
            JOptionPane.showMessageDialog(null, erro.getMessage());
        }        
        return itens;
    }
    
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM pizzas "+                  
                 "WHERE id_pizzas = "+ Integer.toString(this.id_pizzas);            
            stmt.execute(sql);                        
            return  true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }      

    } 
    public String checapizzaigre(){
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql =
" select produtos.descricao,produtos.qtdatual, sabores_itens.qtd,"
                    + "(produtos.qtdatual-sabores_itens.qtd)as falta , "+
" case when ((produtos.qtdatual- sabores_itens.qtd)<0) "+
" then 'NEGATIVO' "+
" else 'POSITIVO' end	"+
" from sabores_itens"+
" inner join produtos on(produtos.id_produtos = sabores_itens.id_produtos)"+
" inner join sabores  on(sabores.id_sabores   = sabores_itens.id_sabores)"+
" inner join pizzas   on(pizzas.id_sabores=sabores.id_sabores)	"+
" where pizzas.id_pizzas='"+Integer.toString(this.getId_pizzas())+"'"+
" group by produtos.descricao,produtos.qtdatual, sabores_itens.qtd"+ 
" having (produtos.qtdatual-sabores_itens.qtd) < 0";            
            
                    
            rs = stmt.executeQuery(sql);
            String s = "";
            while(rs.next()){
                s = s +"\n"+ rs.getString("descricao")+" Falta.:"+rs.getString("falta");                       
            
            }
            if(s != ""){
                s = "..::Opção indisponível::.. \nIngredientes em falta"+s+"\nVerifique!";
            }
            return s;
                
            //return  true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return "";
        }      
    
    
    
    }
    
    
    
    
    public static void main(String []args){
//         sabores sab = new sabores();
         pizzas pz = new pizzas();         
         pz.setId_pizzas(6);
         JOptionPane.showMessageDialog(null, pz.checapizzaigre());
//         pz.setId_sabores(2);
         //pz.setId_pizzas(1);
         //pz.setTamanho("L");
        // pz.setValor(12);
         //pz.excluir();
//         pz.alterar();
        // pz.incluir();
         
        ArrayList<pizzas> list = new ArrayList<pizzas>();        
        list = pz.getItens();
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getTamanho());
            
        }

//        sab.setId_sabores(1);
//        sab.setDescricao("portugueza");
//        sab.incluir();
//        sab.alterar();
//        sab.excluir();
    }

    
}
